"""
真实API数据集成版本
使用高德地图API获取真实数据
"""
from flask import Flask, jsonify, request
from flask_cors import CORS
import requests
import json
from datetime import datetime, timedelta
import openai

app = Flask(__name__)
CORS(app)

# 从配置文件读取API密钥
try:
    from api_keys import GAODE_API_KEY, DEEPSEEK_API_KEY, DEEPSEEK_BASE_URL, DEEPSEEK_MODEL
except ImportError:
    GAODE_API_KEY = "003df4ac18f1cca97eaf59dc90afbaa2"
    DEEPSEEK_API_KEY = "sk-or-v1-xxx"
    DEEPSEEK_BASE_URL = "https://openrouter.ai/api/v1"
    DEEPSEEK_MODEL = "deepseek/deepseek-chat-v3-0324:free"

class RailwayAPI:
    """12306铁路API集成"""
    def __init__(self):
        self.base_url = "https://kyfw.12306.cn/otn"
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
            'Accept': 'application/json, text/plain, */*',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
            'Referer': 'https://kyfw.12306.cn/otn/leftTicket/init'
        }
    
    def search_trains(self, from_station, to_station, depart_date):
        """搜索火车票信息"""
        try:
            # 获取车站代码
            from_code = self.get_station_code(from_station)
            to_code = self.get_station_code(to_station)
            
            if not from_code or not to_code:
                return {'success': False, 'error': '无法找到车站代码'}
            
            # 搜索车次
            url = f"{self.base_url}/leftTicket/query"
            params = {
                'leftTicketDTO.train_date': depart_date,
                'leftTicketDTO.from_station': from_code,
                'leftTicketDTO.to_station': to_code,
                'purpose_codes': 'ADULT'
            }
            
            response = requests.get(url, params=params, headers=self.headers, timeout=10)
            
            if response.status_code == 200:
                data = response.json()
                if data.get('status') and data.get('data'):
                    trains = data['data']['result']
                    return {'success': True, 'trains': trains}
                else:
                    return {'success': False, 'error': '没有找到车次信息'}
            else:
                return {'success': False, 'error': f'API请求失败: {response.status_code}'}
                
        except Exception as e:
            return {'success': False, 'error': f'查询失败: {str(e)}'}
    
    def get_station_code(self, station_name):
        """获取车站代码"""
        # 简化的车站代码映射
        station_codes = {
            '大连交通大学': 'DLT',  # 大连
            '大连': 'DLT',
            '合肥南站': 'ENH',  # 合肥南
            '合肥': 'HFH',
            '北京': 'BJP',
            '上海': 'SHH',
            '广州': 'GZQ',
            '深圳': 'SZQ',
            '杭州': 'HZH',
            '南京': 'NJH',
            '武汉': 'WHN',
            '成都': 'CDW',
            '西安': 'XAY',
            '重庆': 'CQW',
            '天津': 'TJP',
            '青岛': 'QDK',
            '大连北': 'DFT',
            '合肥南': 'ENH',
            '北京南': 'VNP',
            '上海虹桥': 'AOH',
            '广州南': 'IZQ',
            '深圳北': 'IOQ',
        }
        return station_codes.get(station_name, '')

class RealDataAPI:
    """真实数据API集成类"""
    def __init__(self):
        self.api_key = GAODE_API_KEY
        self.base_url = "https://restapi.amap.com/v3"
        self.railway_api = RailwayAPI()
        
        # 初始化DeepSeek AI客户端（兼容旧版本）
        try:
            # 尝试使用新版本OpenAI
            self.ai_client = openai.OpenAI(
                api_key=DEEPSEEK_API_KEY,
                base_url=DEEPSEEK_BASE_URL
            )
            self.ai_model = DEEPSEEK_MODEL
            self.ai_available = True
        except AttributeError:
            # 降级到旧版本OpenAI
            print("使用旧版本OpenAI客户端")
            self.ai_client = None
            self.ai_available = False
    
    def geocode(self, address):
        """地理编码"""
        # 清理地址，移除多余词汇
        clean_address = address.replace('从', '').replace('出发', '').replace('到', '').replace('去', '').strip()
        
        url = f"{self.base_url}/geocode/geo"
        search_attempts = [
            clean_address,  # 清理后的地址
            address,  # 原始地址
            f"{clean_address} 中国",  # 添加国家限定
        ]
        
        # 根据地址内容添加城市限定
        if '大连' in clean_address:
            search_attempts.append(f"{clean_address} 大连")
            search_attempts.append("大连")
        if '合肥' in clean_address:
            search_attempts.append(f"{clean_address} 合肥")
            search_attempts.append("合肥")
        
        for search_address in search_attempts:
            try:
                params = {
                    'key': self.api_key,
                    'address': search_address,
                    'output': 'json'
                }
                
                print(f"尝试地理编码: {search_address}")
                response = requests.get(url, params=params, timeout=10)
                
                if response.status_code == 200:
                    data = response.json()
                    if data.get('status') == '1' and data.get('geocodes'):
                        geocode = data['geocodes'][0]
                        location = geocode.get('location', '').split(',')
                        if len(location) == 2:
                            return {
                                'success': True,
                                'location': {
                                    'lng': float(location[0]),
                                    'lat': float(location[1])
                                },
                                'formatted_address': geocode.get('formatted_address', ''),
                                'address': geocode.get('address', ''),
                                'city': geocode.get('city', ''),
                                'district': geocode.get('district', ''),
                                'province': geocode.get('province', '')
                            }
                print(f"地理编码失败: {search_address}")
            except Exception as e:
                print(f"地理编码异常: {search_address} - {e}")
                continue
        
        return {'success': False, 'error': f'无法解析地址: {address}'}
    
    def search_poi(self, query, city=''):
        """搜索POI"""
        url = f"{self.base_url}/place/text"
        params = {
            'key': self.api_key,
            'keywords': query,
            'city': city,
            'output': 'json',
            'extensions': 'all'
        }
        
        try:
            response = requests.get(url, params=params, timeout=10)
            if response.status_code == 200:
                data = response.json()
                if data.get('status') == '1' and data.get('pois'):
                    pois = []
                    for poi in data['pois'][:10]:  # 限制返回10个结果
                        pois.append({
                            'id': poi.get('id', ''),
                            'name': poi.get('name', ''),
                            'type': poi.get('type', ''),
                            'address': poi.get('address', ''),
                            'location': poi.get('location', ''),
                            'tel': poi.get('tel', ''),
                            'business_area': poi.get('business_area', ''),
                            'cityname': poi.get('cityname', ''),
                            'adname': poi.get('adname', '')
                        })
                    return {'success': True, 'pois': pois}
                else:
                    return {'success': False, 'error': '没有找到相关POI'}
            else:
                return {'success': False, 'error': f'API请求失败: {response.status_code}'}
        except Exception as e:
            return {'success': False, 'error': f'POI搜索失败: {str(e)}'}
    
    def get_weather(self, city):
        """获取天气信息"""
        url = f"{self.base_url}/weather/weatherInfo"
        params = {
            'key': self.api_key,
            'city': city,
            'output': 'json'
        }
        
        try:
            response = requests.get(url, params=params, timeout=10)
            if response.status_code == 200:
                data = response.json()
                if data.get('status') == '1' and data.get('lives'):
                    weather = data['lives'][0]
                    return {
                        'success': True,
                        'weather': {
                            'city': weather.get('city', ''),
                            'weather': weather.get('weather', ''),
                            'temperature': weather.get('temperature', ''),
                            'wind_direction': weather.get('winddirection', ''),
                            'wind_power': weather.get('windpower', ''),
                            'humidity': weather.get('humidity', ''),
                            'report_time': weather.get('reporttime', '')
                        }
                    }
                else:
                    return {'success': False, 'error': '无法获取天气信息'}
            else:
                return {'success': False, 'error': f'天气API请求失败: {response.status_code}'}
        except Exception as e:
            return {'success': False, 'error': f'天气查询失败: {str(e)}'}
    
    def get_real_train_data(self, origin, destination):
        """获取真实火车数据（使用免费API）"""
        try:
            # 使用OSDM开源API获取火车数据
            url = "https://api.osdm.io/v1/trips"
            
            # 获取车站代码
            origin_code = self.get_station_code_for_osdm(origin)
            dest_code = self.get_station_code_for_osdm(destination)
            
            if not origin_code or not dest_code:
                return None
            
            params = {
                'from': origin_code,
                'to': dest_code,
                'date': datetime.now().strftime('%Y-%m-%d')
            }
            
            response = requests.get(url, params=params, timeout=10)
            
            if response.status_code == 200:
                data = response.json()
                return self.parse_osdm_data(data)
            
        except Exception as e:
            print(f"OSDM API调用失败: {e}")
            
        return None
    
    def get_station_code_for_osdm(self, station_name):
        """获取OSDM格式的车站代码"""
        # OSDM使用不同的车站代码格式
        station_mapping = {
            '大连交通大学': 'DAL',
            '大连': 'DAL',
            '合肥南站': 'HEF',
            '合肥': 'HEF',
            '北京': 'BJP',
            '上海': 'SHH',
            '广州': 'GZQ',
            '深圳': 'SZQ'
        }
        return station_mapping.get(station_name, '')
    
    def parse_osdm_data(self, data):
        """解析OSDM API返回的数据"""
        routes = []
        
        if 'trips' in data:
            for trip in data['trips'][:5]:  # 限制返回5个结果
                route = {
                    'total_time': self.parse_duration(trip.get('duration', '0')),
                    'total_price': trip.get('price', {}).get('amount', 0),
                    'transfers': len(trip.get('legs', [])) - 1,
                    'details': []
                }
                
                for leg in trip.get('legs', []):
                    detail = {
                        'type': 'high_speed_rail',
                        'origin': leg.get('from', {}).get('name', ''),
                        'destination': leg.get('to', {}).get('name', ''),
                        'departure_time': leg.get('departure', {}).get('time', ''),
                        'arrival_time': leg.get('arrival', {}).get('time', ''),
                        'price': leg.get('price', {}).get('amount', 0),
                        'train_number': leg.get('vehicle', {}).get('name', '未知'),
                        'can_buy': True,
                        'description': '真实火车数据'
                    }
                    route['details'].append(detail)
                
                routes.append(route)
        
        return routes
    
    def generate_routes(self, origin, destination):
        """生成智能路线数据"""
        # 首先尝试获取真实数据
        real_routes = self.get_real_train_data(origin, destination)
        if real_routes:
            print(f"成功获取到 {len(real_routes)} 条真实路线")
            return real_routes
        
        # 如果真实数据不可用，使用模拟数据
        print("使用增强模拟数据")
        routes = []
        
        # 方案1：高铁直达（如果距离适中）
        if '大连' in origin and '合肥' in destination:
            routes.append({
                'total_time': 2.5,
                'total_price': 150,
                'transfers': 0,
                'details': [
                    {
                        'type': 'high_speed_rail',
                        'origin': origin,
                        'destination': destination,
                        'departure_time': '08:00',
                        'arrival_time': '10:30',
                        'price': 150,
                        'train_number': 'G1234',
                        'can_buy': True,
                        'description': '高铁直达，舒适便捷'
                    }
                ]
            })
        
        # 方案2：高铁中转（性价比高）
        routes.append({
            'total_time': 3.2,
            'total_price': 120,
            'transfers': 1,
            'details': [
                {
                    'type': 'high_speed_rail',
                    'origin': origin,
                    'destination': '南京南',
                    'departure_time': '08:30',
                    'arrival_time': '10:00',
                    'price': 80,
                    'train_number': 'G1235',
                    'can_buy': True,
                    'description': '第一段：高铁'
                },
                {
                    'type': 'high_speed_rail',
                    'origin': '南京南',
                    'destination': destination,
                    'departure_time': '10:30',
                    'arrival_time': '11:50',
                    'price': 40,
                    'train_number': 'G1236',
                    'can_buy': True,
                    'description': '第二段：高铁'
                }
            ]
        })
        
        # 方案3：飞机直达（快速但贵）
        routes.append({
            'total_time': 4.0,
            'total_price': 280,
            'transfers': 0,
            'details': [
                {
                    'type': 'flight',
                    'origin': origin,
                    'destination': destination,
                    'departure_time': '09:00',
                    'arrival_time': '13:00',
                    'price': 280,
                    'flight_number': 'CA1234',
                    'can_buy': True,
                    'description': '飞机直达，快速舒适'
                }
            ]
        })
        
        # 方案4：高铁+飞机联运（灵活选择）
        routes.append({
            'total_time': 5.5,
            'total_price': 180,
            'transfers': 1,
            'details': [
                {
                    'type': 'high_speed_rail',
                    'origin': origin,
                    'destination': '北京南',
                    'departure_time': '07:00',
                    'arrival_time': '09:30',
                    'price': 60,
                    'train_number': 'G1237',
                    'can_buy': True,
                    'description': '第一段：高铁到北京'
                },
                {
                    'type': 'flight',
                    'origin': '北京',
                    'destination': destination,
                    'departure_time': '11:00',
                    'arrival_time': '12:30',
                    'price': 120,
                    'flight_number': 'CA1235',
                    'can_buy': True,
                    'description': '第二段：飞机'
                }
            ]
        })
        
        # 方案5：经济型路线（最便宜）
        routes.append({
            'total_time': 6.0,
            'total_price': 90,
            'transfers': 2,
            'details': [
                {
                    'type': 'high_speed_rail',
                    'origin': origin,
                    'destination': '沈阳',
                    'departure_time': '06:00',
                    'arrival_time': '07:30',
                    'price': 30,
                    'train_number': 'G1238',
                    'can_buy': True,
                    'description': '第一段：高铁'
                },
                {
                    'type': 'high_speed_rail',
                    'origin': '沈阳',
                    'destination': '南京南',
                    'departure_time': '08:00',
                    'arrival_time': '11:00',
                    'price': 40,
                    'train_number': 'G1239',
                    'can_buy': True,
                    'description': '第二段：高铁'
                },
                {
                    'type': 'high_speed_rail',
                    'origin': '南京南',
                    'destination': destination,
                    'departure_time': '12:00',
                    'arrival_time': '13:30',
                    'price': 20,
                    'train_number': 'G1240',
                    'can_buy': True,
                    'description': '第三段：高铁'
                }
            ]
        })
        
        return routes
    
    def get_ai_response(self, message, context=None):
        """使用DeepSeek AI生成智能回复"""
        if not self.ai_available or not self.ai_client:
            print("AI服务不可用，使用备用回复")
            return self.get_fallback_response(message)
        
        try:
            # 构建系统提示词
            system_prompt = """你是一个专业的旅行规划AI助手，专门帮助用户规划出行路线。

你的能力包括：
1. 理解用户的出行需求（出发地、目的地、时间偏好等）
2. 分析不同交通方式的优缺点
3. 提供个性化的出行建议
4. 回答关于路线、交通、天气等相关问题

请用友好、专业的语气回复用户，并提供实用的建议。"""
            
            # 构建用户消息
            user_message = message
            if context:
                user_message += f"\n\n上下文信息：{context}"
            
            # 调用DeepSeek API
            response = self.ai_client.chat.completions.create(
                model=self.ai_model,
                messages=[
                    {"role": "system", "content": system_prompt},
                    {"role": "user", "content": user_message}
                ],
                max_tokens=1000,
                temperature=0.7
            )
            
            return response.choices[0].message.content
            
        except Exception as e:
            print(f"DeepSeek AI调用失败: {e}")
            # 降级到简单回复
            return self.get_fallback_response(message)
    
    def get_fallback_response(self, message):
        """当AI服务不可用时的备用回复"""
        if '路线' in message or '到' in message:
            return "🚀 我可以帮您规划出行路线！\n\n请使用上方的搜索框输入：\n• 出发地：如'大连'或'大连交通大学'\n• 目的地：如'合肥'或'合肥南站'\n\n然后点击'搜索路线'按钮，我会为您提供多种出行方案！"
        elif '天气' in message:
            return "🌤️ 我可以帮您查询天气信息！\n\n请告诉我您想查询哪个城市的天气，比如：\n• 查询北京天气\n• 查询上海天气\n• 查询大连天气"
        elif '搜索' in message or '找' in message:
            return "🔍 我可以帮您搜索地点信息！\n\n请在上方搜索框中输入您要找的地点，比如：\n• 火车站\n• 机场\n• 酒店\n• 景点"
        else:
            return "👋 您好！我是您的出行助手！\n\n我可以帮您：\n• 🚄 规划出行路线\n• 🌤️ 查询天气信息\n• 🔍 搜索地点信息\n• 🗺️ 显示地图路线\n\n请告诉我您需要什么帮助！"

# 初始化API实例
real_api = RealDataAPI()

@app.route('/api/test', methods=['GET'])
def test():
    return jsonify({
        'success': True,
        'message': '真实API集成服务运行正常',
        'timestamp': datetime.now().isoformat()
    })

@app.route('/api/status', methods=['GET'])
def status():
    return jsonify({
        'success': True,
        'status': 'online',
        'version': '2.0.0',
        'apis': {
            'gaode': 'available',
            'railway': 'available',
            'ai': 'available' if real_api.ai_available else 'unavailable'
        },
        'timestamp': datetime.now().isoformat()
    })

@app.route('/api/cities', methods=['GET'])
def get_cities():
    """获取城市列表"""
    cities_list = [
        {'id': 1, 'name': '北京', 'code': 'BJP', 'level': 'province'},
        {'id': 2, 'name': '上海', 'code': 'SHH', 'level': 'province'},
        {'id': 3, 'name': '广州', 'code': 'GZQ', 'level': 'province'},
        {'id': 4, 'name': '深圳', 'code': 'SZQ', 'level': 'province'},
        {'id': 5, 'name': '杭州', 'code': 'HZH', 'level': 'province'},
        {'id': 6, 'name': '南京', 'code': 'NJH', 'level': 'province'},
        {'id': 7, 'name': '武汉', 'code': 'WHN', 'level': 'province'},
        {'id': 8, 'name': '成都', 'code': 'CDW', 'level': 'province'},
        {'id': 9, 'name': '西安', 'code': 'XAY', 'level': 'province'},
        {'id': 10, 'name': '重庆', 'code': 'CQW', 'level': 'province'},
        {'id': 11, 'name': '天津', 'code': 'TJP', 'level': 'province'},
        {'id': 12, 'name': '青岛', 'code': 'QDK', 'level': 'province'},
        {'id': 13, 'name': '大连', 'code': 'DLT', 'level': 'province'},
        {'id': 14, 'name': '合肥', 'code': 'HFH', 'level': 'province'},
        {'id': 15, 'name': '苏州', 'code': 'SZH', 'level': 'province'},
        {'id': 16, 'name': '无锡', 'code': 'WXH', 'level': 'province'},
        {'id': 17, 'name': '宁波', 'code': 'NGH', 'level': 'province'},
        {'id': 18, 'name': '厦门', 'code': 'XMS', 'level': 'province'},
        {'id': 19, 'name': '福州', 'code': 'FZS', 'level': 'province'},
        {'id': 20, 'name': '长沙', 'code': 'CSQ', 'level': 'province'},
        {'id': 21, 'name': '郑州', 'code': 'ZZF', 'level': 'province'},
        {'id': 22, 'name': '济南', 'code': 'JNK', 'level': 'province'},
        {'id': 23, 'name': '石家庄', 'code': 'SJP', 'level': 'province'},
        {'id': 24, 'name': '太原', 'code': 'TYV', 'level': 'province'},
        {'id': 25, 'name': '呼和浩特', 'code': 'HHC', 'level': 'province'},
        {'id': 26, 'name': '沈阳', 'code': 'SYT', 'level': 'province'},
        {'id': 27, 'name': '长春', 'code': 'CCT', 'level': 'province'},
        {'id': 28, 'name': '哈尔滨', 'code': 'HBB', 'level': 'province'},
        {'id': 29, 'name': '南昌', 'code': 'NCG', 'level': 'province'},
        {'id': 30, 'name': '昆明', 'code': 'KMM', 'level': 'province'},
        {'id': 31, 'name': '贵阳', 'code': 'GIW', 'level': 'province'},
        {'id': 32, 'name': '南宁', 'code': 'NNZ', 'level': 'province'},
        {'id': 33, 'name': '海口', 'code': 'VUQ', 'level': 'province'},
        {'id': 34, 'name': '兰州', 'code': 'LZJ', 'level': 'province'},
        {'id': 35, 'name': '西宁', 'code': 'XNO', 'level': 'province'},
        {'id': 36, 'name': '银川', 'code': 'YIJ', 'level': 'province'},
        {'id': 37, 'name': '乌鲁木齐', 'code': 'WAR', 'level': 'province'},
        {'id': 38, 'name': '拉萨', 'code': 'LSO', 'level': 'province'},
        {'id': 39, 'name': '台北', 'code': 'TBS', 'level': 'province'},
        {'id': 40, 'name': '香港', 'code': 'XGG', 'level': 'province'},
        {'id': 41, 'name': '澳门', 'code': 'MFM', 'level': 'province'},
        {'id': 42, 'name': '大连交通大学', 'code': 'DLT', 'level': 'university'},
        {'id': 43, 'name': '合肥南站', 'code': 'ENH', 'level': 'station'},
        {'id': 44, 'name': '北京南站', 'code': 'VNP', 'level': 'station'},
        {'id': 45, 'name': '上海虹桥站', 'code': 'AOH', 'level': 'station'},
        {'id': 46, 'name': '广州南站', 'code': 'IZQ', 'level': 'station'},
        {'id': 47, 'name': '深圳北站', 'code': 'IOQ', 'level': 'station'},
        {'id': 48, 'name': '杭州东站', 'code': 'HGH', 'level': 'station'},
        {'id': 49, 'name': '南京南站', 'code': 'NKH', 'level': 'station'},
        {'id': 50, 'name': '武汉站', 'code': 'WHN', 'level': 'station'},
    ]
    
    return jsonify({
        'success': True,
        'cities': cities_list,
        'source': f'扩展城市数据库（包含{len(cities_list)}个城市/县城）',
        'total': len(cities_list)
    })

@app.route('/api/search', methods=['POST'])
def search():
    data = request.get_json()
    origin = data.get('origin', '')
    destination = data.get('destination', '')
    
    if not origin or not destination:
        return jsonify({
            'success': False,
            'error': '请提供出发地和目的地'
        })
    
    # 使用高德地图API进行路线规划
    try:
        # 地理编码获取坐标
        print(f"正在搜索: {origin} -> {destination}")
        origin_result = real_api.geocode(origin)
        dest_result = real_api.geocode(destination)
        
        print(f"出发地编码结果: {origin_result}")
        print(f"目的地编码结果: {dest_result}")
        
        if not origin_result['success'] or not dest_result['success']:
            error_msg = f"无法解析地址: 出发地({origin_result.get('error', '未知错误')}) 目的地({dest_result.get('error', '未知错误')})"
            print(f"地理编码失败: {error_msg}")
            return jsonify({
                'success': False,
                'error': error_msg
            })
        
        # 使用模拟路线数据（暂时不使用12306 API）
        print(f"使用模拟路线数据...")
        routes = real_api.generate_routes(origin, destination)
        
        return jsonify({
            'success': True,
            'routes': routes,
            'message': f'为您找到 {len(routes)} 条路线',
            'origin_info': origin_result,
            'destination_info': dest_result
        })
        
    except Exception as e:
        print(f"搜索过程中发生错误: {e}")
        return jsonify({
            'success': False,
            'error': f'搜索失败: {str(e)}'
        })

@app.route('/api/chat', methods=['POST'])
def chat():
    """AI聊天接口 - 使用DeepSeek AI"""
    data = request.get_json()
    message = data.get('message', '')
    context = data.get('context', None)
    
    if not message:
        return jsonify({
            'success': False,
            'error': '请提供消息内容'
        })
    
    try:
        # 使用DeepSeek AI生成智能回复
        response = real_api.get_ai_response(message, context)
        
        # 生成建议
        suggestions = []
        if '路线' in message or '到' in message:
            suggestions = ['从北京到上海', '从广州到深圳', '从杭州到南京']
        elif '天气' in message:
            suggestions = ['查询北京天气', '查询上海天气', '查询广州天气']
        elif '搜索' in message or '找' in message:
            suggestions = ['搜索火车站', '搜索机场', '搜索酒店']
        else:
            suggestions = ['查询天气', '规划路线', '搜索地点']
        
        return jsonify({
            'success': True,
            'response': response,
            'suggestions': suggestions,
            'ai_model': 'DeepSeek V3'
        })
        
    except Exception as e:
        print(f"AI聊天服务错误: {e}")
        return jsonify({
            'success': False,
            'error': f'AI服务暂时不可用: {str(e)}'
        })

@app.route('/api/weather', methods=['GET', 'POST'])
def weather():
    """天气查询接口"""
    if request.method == 'GET':
        city = request.args.get('city', '')
    else:
        data = request.get_json()
        city = data.get('city', '')
    
    if not city:
        return jsonify({
            'success': False,
            'error': '请提供城市名称'
        })
    
    result = real_api.get_weather(city)
    return jsonify(result)

@app.route('/api/poi', methods=['POST'])
def poi():
    """POI搜索接口"""
    data = request.get_json()
    query = data.get('query', '')
    city = data.get('city', '')
    
    if not query:
        return jsonify({
            'success': False,
            'error': '请提供搜索关键词'
        })
    
    result = real_api.search_poi(query, city)
    return jsonify(result)

@app.route('/api/geocode', methods=['POST'])
def geocode():
    """地理编码接口"""
    data = request.get_json()
    address = data.get('address', '')
    
    if not address:
        return jsonify({
            'success': False,
            'error': '请提供地址'
        })
    
    result = real_api.geocode(address)
    return jsonify(result)

@app.route('/api/trains', methods=['POST'])
def search_trains():
    """火车票查询接口"""
    data = request.get_json()
    from_station = data.get('from_station', '')
    to_station = data.get('to_station', '')
    depart_date = data.get('depart_date', datetime.now().strftime('%Y-%m-%d'))
    
    if not from_station or not to_station:
        return jsonify({
            'success': False,
            'error': '请提供出发站和到达站'
        })
    
    result = real_api.railway_api.search_trains(from_station, to_station, depart_date)
    return jsonify(result)

if __name__ == '__main__':
    print("🚀 启动真实API集成服务...")
    print("📍 高德地图API: 已配置")
    print("🚄 12306铁路API: 已配置")
    print("🌐 服务地址: http://localhost:5000")
    print("📋 API文档: http://localhost:5000/api/status")
    app.run(debug=True, host='0.0.0.0', port=5000)